/**
 * 给定数组，问是否存在 p、q 满足 0 < p < q < n-1 
 * 且 [0, p] 严格递增、[p, q]严格递减、[q, n-1]严格递增
 * 挨个找即可
 */
class Solution {
public:
    bool isTrionic(vector<int>& nums) {
        int n = nums.size();
        int p = 1;
        while(p < n and nums[p - 1] < nums[p]) ++p;
        if(p == n or 1 == p) return false;
        if(nums[p - 1] == nums[p]) return false;
        p -= 1;

        int q = p + 1;
        while(q < n and nums[q] < nums[q - 1]) ++q;
        if(q == n) return false;
        if(nums[q - 1] == nums[q]) return false;

        q -= 1;
        if(q + 1 == n) return false;
        // 从q到n-1必须严格递增
        for(int i=q+1;i<n;++i){
            if(not (nums[i - 1] < nums[i])){
                return false;
            }
        }
        return true;
    }
};